type token =
  | PLUS
  | MINUS
  | TIMES
  | DIVIDE
  | FPLUS
  | FMINUS
  | FTIMES
  | FDIVIDE
  | ASSIGN
  | LPAREN
  | RPAREN
  | LBRACE
  | RBRACE
  | COMMA
  | SEMI
  | INT
  | STRINGV
  | DQUOTATION
  | SQUOTATION
  | LSQUA
  | RSQUA
  | PERIOD
  | RETURN
  | FLO
  | EOF
  | LITERAL of (int)
  | FLOAT of (float)
  | ID of (string)
  | STR of (string)
  | CHAR of (char)

val program :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf ->  Ast.program
